#ifndef CUTJOB_H
#define CUTJOB_H

#include<QThread>
#include<QRunnable>
#include<QDebug>
#include<QString>
#include<QVector>
#include<windows.h>
#include<QtGui/QApplication>
#include<QStringList>
#include<QObject>
#include<QTextStream>
#include<QFile>
#include<algorithm>
#include<iostream>
#include<vector>
#include<QSet>
#include<QWidget>

using namespace std;
const int INF =1L<<25;

class Cutjob:public QObject,public QRunnable
{
    Q_OBJECT
public:
    Cutjob(QString & , int);
    void run();
    static bool isfir;
    void setdic(QVector<QString>&);
    void setstop(QVector<QString>&);
    void setcut(QSet<QChar>&);
    void setblock(QSet<QString>&);
    static QVector<QString> dic;
    static QSet<QChar> cutch;
    static QVector<QString> stopset;
    static QSet<QString>  block;
private:
    void show(QVector<QString> &);
    int maxmatch(int,QString &,QVector<QString> &);
    bool isalpha(QChar ch);
    void addwd(QString wd,QVector<QString> &,QSet<QString> &);

    QVector<QString> analy(QString & txt,
                           QVector<QString> & dic,
                           QSet<QChar> cutch,
                           QVector<QString> & stopset,
                           QSet<QString> & block );
    int geteng(int , QString &);
    int getdig(int ,QString &);
    int lobound(int ,int ,int,QChar ,QVector<QString> & );
    int hibound(int ,int ,int,QChar ,QVector<QString> & );

    QString txt;
    int id;
signals:
    void setvalue(int ,int );
    void finishwork(int , QStringList);
};

#endif  CUTJOB_H
